package com.catjiu.webeditor.parser;

import cn.hutool.core.util.StrUtil;
import com.catjiu.webeditor.ParserContext;
import com.catjiu.webeditor.style.Style;
import org.jsoup.nodes.Element;
import org.jsoup.nodes.Node;
import org.jsoup.nodes.TextNode;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.*;

import java.math.BigInteger;

public class UlNodeParser extends NodeParser{
    @Override
    public void parser(ParserContext context, Style style) {
        Element node = (Element) getNode();
        String listType = node.tagName();
        BigInteger numId = context.getNumbering(listType);
        //选定li，去掉其他干扰项
        for (Node li : node.getElementsByTag("li")) {
            context.setRpt(ParserContext.RPT.LIST);
            for (Node p : li.childNodes()) {
                if(p instanceof TextNode && StrUtil.isBlank(((TextNode) p).text())){
                    continue;
                }
                ParserSelector.select(p).parser(context,null);
            }
            CTP ctp = context.getParagraph().getCTP();
            CTPPr ppr = ctp.isSetPPr() ? ctp.getPPr() : ctp.addNewPPr();
            CTNumPr numPr = ppr.isSetNumPr() ? ppr.getNumPr() : ppr.addNewNumPr();
            if(!numPr.isSetIlvl()){
                numPr.addNewIlvl().setVal(BigInteger.ZERO);
            }
            CTJc ctJc = ppr.isSetJc() ? ppr.getJc() : ppr.addNewJc();
            ctJc.setVal(STJc.LEFT);

            if(numPr.isSetNumId()){
                numPr.getNumId().setVal(numId);
            }else{
                numPr.addNewNumId().setVal(numId);
            }
            context.setRpt(null);
        }
    }
}
